/*
* 日志等级模块

* 1.定义枚举类，枚举出日志等级
    OFF     关闭所有日志输出
    DEBUG   debug
    INFO    用户提示
    WARN    警告
    ERROR   错误
    FATAL   致命错误- 导致程序崩溃的信息

* 2.提供转换接口，将枚举转换为相应字符串
*/
#ifndef __M_LEVEL_H__
#define __M_LEVEL_H__

namespace bitlog
{
    class LogLevel
    {

    public:
        enum class value
        {
            UNKNOW = 0,
            DEBUG, // debug
            INFO,  // 用户提示
            WARN,  // 警告
            ERROR, // 错误
            FATAL, // 致命错误- 导致程序崩溃的信息
            OFF    // 关闭
        };

        static const char *toString(LogLevel::value level) // 类内静态成员函数: 不创建类即可调用
        { 
            switch (level)
            {
            case LogLevel::value::DEBUG:
                return "DEBUG"; // debug
            case LogLevel::value::INFO:
                return "INFO"; // 用户提示
            case LogLevel::value::WARN:
                return "WARN"; // 警告
            case LogLevel::value::ERROR:
                return "ERROR"; // 错误
            case LogLevel::value::FATAL:
                return "FATAL"; // 致命错误- 导致程序崩溃的信息
            case LogLevel::value::OFF:
                return "OFF"; // 关闭

            default:
                return "UNKNOW";
            }
        }
    };

} // namespace bitlog
#endif